Fork me on GitHub

【cuckoo沙箱系列1】在物理机搭建单节点cuckoo沙箱

最基础的搭建步骤就是在单个物理机节点部署cuckoo,能够调用配置好的virtual box完成运行任务并产生报告。在搭建好了单个cuckoo之后,可以考虑进阶的分布式搭建。

主要的参考教程

  1. 很详细的一篇:https://blog.csdn.net/Bingoooooo_/article/details/94248229
  2. 总体步骤正确的:https://www.jianshu.com/p/ac009f6c2710

单节点沙箱运行方式

. venv/bin/activate 进入虚拟环境。
一个终端运行cuckoo -d;另一个运行cuckoo web

(cuckoo -d开启的是后台分析进程,提交样本的方式下面介绍了很多,但是后台分析进程是基础,没有开启的话无法分析样本的)

web访问提交样本

cuckoo web运行后会给出ip:端口,访问web就可以直接通过网页提交样本,查看报告,调试的时候很方便。能够知道虚拟机是否调用成功了,产生的报告有没有问题。

命令行cuckoo submit提交样本

下发任务并且传参数运行:

cuckoo submit –timeout 600 –package exe –options arguments=’m0nk3y -s 192.168.2.136:5000’ /home/tangmingyu/TEST_CUCKOO/monkey-windows-64.exe

开启cuckoo api

https://cuckoo.readthedocs.io/en/latest/usage/api/#
直接cuckoo api

(venv) tangmingyu@tangmingyu-QiTianM610-D529:~/venv/bin$ cuckoo api
2019-09-18 21:17:27,179 [werkzeug] INFO: * Running on http://localhost:8090/ (Press CTRL+C to quit)

命令行提交样本

通过命令行就可以提交样本自动分析了。

curl -H “Authorization: Bearer bZ0mLmUX2QElehFjI33OOQ” -F file=@/home/tangmingyu/文档/安全沙箱安装/恶意软件样本/test1.exe http://localhost:8090/tasks/create/file

查看cuckoo.conf中的api_token = bZ0mLmUX2QElehFjI33OOQ,把这边注释掉就不需要api_token的验证了,比较省事。

python脚本提交样本

1
2
3
4
5
6
7
8
import requests
REST_URL = "http://localhost:8090/tasks/create/file"
SAMPLE_FILE = "/home/tangmingyu/文档/安全沙箱安装/恶意软件样本/test1.exe"
with open(SAMPLE_FILE, "rb") as sample:
files = {"file": ("temp_file_name", sample)}
r = requests.post(REST_URL, files=files)

安装过程遇到的问题

  • 运行cuckoo报错ImportError:lib*.so–cannot open shared object file: No such file or directory

1-软链接方式
1.1 找到文件
find / -name lib.so (缺失的动态链接库)
1.2 建立软链接
ln - /path/to/lib
.so /usr/lib
1.3 sudo ldconfig

  • 运行cuckoo报错AttributeError: Rules instance has no attribute ‘save’

Please pip uninstall yara. It’s very outdated and we’re using yara-python==3.6.3 instead.

  • pip install MySQL-python报错

    先sudo apt-get install libmysqlclient-dev,然后pip install

  • 修改最大打开文件数量

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    tangmingyu@tangmingyu-QiTianM610-D529:~$ sudo echo 1000000 > sudo /proc/sys/fs/nr_open
    tangmingyu@tangmingyu-QiTianM610-D529:~$ ulimit -n
    1024
    tangmingyu@tangmingyu-QiTianM610-D529:~$ cat /proc/sys/fs/nr_open
    1000000
    tangmingyu@tangmingyu-QiTianM610-D529:~$ sudo vi /etc/security/limits.conf
    tangmingyu@tangmingyu-QiTianM610-D529:~$ ulimit -n
    1024
    tangmingyu@tangmingyu-QiTianM610-D529:~$ sudo sh -c "ulimit -n 65535 && exec su $LOGNAME"
    tangmingyu@tangmingyu-QiTianM610-D529:~$ ulimit -n
    500000
    tangmingyu@tangmingyu-QiTianM610-D529:~$ . venv/bin/activate
    (venv) tangmingyu@tangmingyu-QiTianM610-D529:~$ ulimit -n
    500000
  • win7虚拟机之前一直连不上外网

    1
    2
    3
    4
    iptables -P FORWARD ACCEPT
    iptables -A FORWARD -o eth0 -i vboxnet0 -s 192.168.2.0/24 -m conntrack --ctstate NEW -j ACCEPT
    iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
    iptables -A POSTROUTING -t nat -j MASQUERADE

开启转发功能之后虚拟机可以连接外网了,但是本机可能就baidu都上不了。这时候需要修改一下vi /etc/resolv.conf,改为144.144.144.144

  • 提交之后task一直是pending状态,原因是virtual manager的地址写成了virtual box

https://github.com/cuckoosandbox/cuckoo/issues/2346

  • 如果系统没启用root账户,由于 tcpdump 的执行需要 root 权限,则需要以下配置:

    1
    2
    3
    4
    5
    6
    7
    8
    sudo setcap cap_net_raw,cap_net_admin=eip /usr/sbin/tcpdump
    sudo chmod +s /usr/sbin/tcpdump
    以上方法都试过,没有用。
    后来搜到了官方给的,成功了:
    sudo apt-get install apparmor-utils
    sudo aa-disable /usr/sbin/tcpdump
    https://cuckoo.sh/docs/faq/index.html#permission-denied-for-tcpdump
  • mongo数据库的验证
    db.auth(‘admin’, ‘admin’) 返回1表示成功

  • 验证guest是否成功连接上:
    tangmingyu@tangmingyu-QiTianM610-D529:~$ curl 192.168.2.200:8000
    {“message”: “Cuckoo Agent!”, “version”: “0.10”, “features”: [“execpy”, “pinning”, “logs”, “largefile”, “unicodepath”]}

  • error fetching configuration file
    在虚拟机里一定要以管理员身份运行agent

  • 复制虚拟机之后突然要输入用户名和密码了

    账号:Administrator;密码为空试一下

数据库

mysql存的是提交任务时间 虚拟机配置之类的信息;mongo存储的是软件提交运行之后,产生的那些分析数据。

##好用的可视化mong数据库工具adminMongo
教程网址:https://www.cnblogs.com/zhangycun/p/10534123.html

开启方式:

cd adminMongo
npm start

-------------本文结束感谢您的阅读-------------